home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Support Library
/
RoseWare - Network Support Library.iso
/
btrieve
/
bfile.arc
/
SIZES.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1986-06-16
|
2KB
|
62 lines
PROGRAM Sizes;
{
| Purpose: Calculate data sizes for Btrieve
| Author: David A. Peterson
| Created: 31 March 1986
| Modified: Listed most recent first
}
VAR
Unique : Boolean;
Loc : Byte;
Ch : Char;
DataPages : Real;
NumRecs : Real;
PageSize : Real;
RecLen : Real;
NumDupKeys : Real;
IndexPages : ARRAY [1 .. 24] OF Real;
NumUniqueKeys : Real;
KeyLen : Real;
TotalPages : Real;
FileSize : Real;
NumKeys : Byte;
BEGIN { Sizes }
WriteLn ('Btrieve File Size');
WriteLn;
Write ('Number of records : ');
ReadLn (NumRecs);
Write ('Page size (512n) : ');
ReadLn (PageSize);
Write ('Record Length : ');
ReadLn (RecLen);
Write ('Number of keys : ');
ReadLn (NumKeys);
NumDupKeys := 0;
FOR Loc := 1 TO NumKeys DO
BEGIN
WriteLn ('For key ', Loc);
Write ('Key Length : ');
ReadLn (KeyLen);
Write ('Is key unique ? ');
ReadLn (Ch);
Unique := UpCase (Ch) = 'Y';
IF Unique THEN
IndexPages[Loc] := (NumKeys / ( (PageSize - 12) / (KeyLen + 8) ) ) * 2
ELSE
BEGIN
NumDupKeys := NumDupKeys + 1;
Write ('How many Unique Key values ? ');
ReadLn (NumUniqueKeys);
IndexPages[Loc] := (NumUniqueKeys / ( (PageSize - 12) / (KeyLen + 12) ) ) * 2
END
END;
DataPages := NumRecs / ( (PageSize - 6) / (RecLen + (8 * NumDupKeys) ) );
TotalPages := 1 + Round (DataPages + 0.5);
FOR Loc := 1 TO NumKeys DO
TotalPages := TotalPages + Round (IndexPages[Loc] + 0.5);
FileSize := TotalPages * PageSize;
Write ('File size ', FileSize:9:0)
END { Sizes }.